import {callCheckVersion} from "./call-check-version"
// 推荐再App.vue中使用
const PACKAGE_INFO_KEY = '__package_info__'
export function checkUpdate(){
	return new Promise((resolve, reject) => {
		callCheckVersion().then(async (uniUpgradeCenterResult) => {
			// NOTE uni-app x 3.96 解构有问题
			const code = uniUpgradeCenterResult.code
			const message = uniUpgradeCenterResult.message
			const url = uniUpgradeCenterResult.url // 安装包下载地址

			// 此处逻辑仅为示例，可自行编写
			if (code > 0) {
				// 腾讯云和阿里云下载链接不同，需要处理一下，阿里云会原样返回
				const tcbRes = await uniCloud.getTempFileURL({
					fileList: [url]
				});
				if (typeof tcbRes.fileList[0].tempFileURL !== 'undefined')
					uniUpgradeCenterResult.url = tcbRes.fileList[0].tempFileURL;

				/**
				 * 提示升级一
				 * 使用 uni.showModal
				 */
				// return updateUseModal(uniUpgradeCenterResult)


				// 静默更新，只有wgt有
				if (uniUpgradeCenterResult.is_silently) {
					uni.downloadFile({
						url,
						success: res => {
							if (res.statusCode == 200) {
								// 下载好直接安装，下次启动生效
								plus.runtime.install(res.tempFilePath, {
									force: false
								});
							}
						}
					});
					return;
				}
	

				/**
				 * 提示升级二
				 * 官方适配的升级弹窗，可自行替换资源适配UI风格
				 */
				uni.setStorageSync(PACKAGE_INFO_KEY, uniUpgradeCenterResult)
				uni.navigateTo({
					url: `/uni_modules/uni-upgrade-center-app/pages/upgrade-popup?local_storage_key=${PACKAGE_INFO_KEY}`,
					fail: (err) => {
						console.error('更新弹框跳转失败', err)
						uni.removeStorageSync(PACKAGE_INFO_KEY)
					}
				})

				return resolve(uniUpgradeCenterResult)
			} else if (code < 0) {
				console.error(message)
				return reject(uniUpgradeCenterResult)
			}
			return resolve(uniUpgradeCenterResult)
		}).catch((err) => {
			reject(err)
		})
	});
}

